A terminal server is a specialized computing system that aggregates multiple communication channels. One or more clients (or “thin clients”) may engage in bidirectional communication with the terminal server in a terminal server session. In such a session, applications are executed using server resources and images and sound corresponding to the output of those executing applications are sent to the client for local presentation. In this way, one using the client computer gets the experience that the applications are executing locally on the client machine, while the processing occurs on the server.
Many computing applications written without thought to a terminal server context may run without modification on a terminal server, which executes an instance of an application for each client session that wishes to execute it. However, there do exist compatibility issues with some applications that were originally designed to run on a single desktop machine.
This may be due to characteristics of the terminal server environment that differentiate it from a single-user environment. For example, a terminal server environment is a multi-user environment and an application may be accessed simultaneously by a plurality of users. Further, a user on a client may be a non-privileged user on the terminal server.
As such, some applications face issues that interfere with proper execution, such as unexpected sharing of data, corruption of data through simultaneous access by a plurality of application instances, inability to use more than one instance of an application, and requiring privileged user credentials to access system files or settings. Such an application may be designed to expect that only one instance of it executes on a computing device (for instance, that it writes to C:\Data\application.txt and that no other instance of the application will be present to simultaneously write there), that it has exclusive use of a file system, that it will run with administrator privileges.